﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using App_Negocio;
using System.Security.Principal;
using System.Net.Mail;
using System.Net;

using System.IO;

using System.Net.Mime;

public partial class Presupuesto : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        // lblDiaAnt.Text = ((Math.Round((double.Parse(contadorVecesDiaAnterior2.ToString()) / double.Parse(cantSimulaciones.ToString())), 2)) * 100).ToString() + " %. Veces:   " + Math.Round((double.Parse(contadorVecesDiaAnterior2.ToString())), 2);
        if (!IsPostBack)
        {
            // aca hay que ver cuando querramos hacer que un empleado quiera crear un presupuesto ver el tema del cliente
            IPrincipal p = HttpContext.Current.User;
            if (!p.IsInRole("Cliente"))
            {
                Session["Mensaje"] = "Usted no posee los permisos necesarios para ingresar a esta pagina";

                if (Session["Identificador"] != null)
                {
                    //ESTO NUNCA PASA
                }
                else
                {
                    Response.Redirect("login.aspx");
                }
            }
            else
            {
                cargarSalon();
                cargarMenu(ddlMenu1);
                cargarListaEventoTipo();
                cargarCblBebida();
                cargarCblsAdicional();
            }
        }
    }
    
    protected void cargarListaEventoTipo()
    {
        App_Negocio.EventoTipo eTipo = new App_Negocio.EventoTipo();
        // Obtengo la tabla del DataSet
        DataView dataView = eTipo.popularEventoTipo();

        //Vinculo con el DropDownList
        ddlTipoEvento.DataSource = dataView;

        ddlTipoEvento.DataTextField = "tEve_Nombre";
        ddlTipoEvento.DataValueField = "tEve_Id";
        ddlTipoEvento.DataBind();
    }

    protected void cargarCblBebida()
    {
        App_Negocio.Bebida bebida = new App_Negocio.Bebida();
        //// Obtengo la tabla del DataSet
        //DataView dataView = bebida.popularBebida();

        ////Vinculo con el DropDownList
        //cblBebidas.DataSource = dataView;
        //cblBebidas.DataTextField = "beb_Nombre";
        //cblBebidas.DataValueField = "beb_Id";
        //cblBebidas.DataMember = "beb_Precio";
        //cblBebidas.DataBind();

        LinkedList<Bebida> bebidas = bebida.popularBebida();

        //Vinculo con el DropDownList
        cblBebidas.DataSource = bebidas;
        cblBebidas.DataTextField = "nombre";
        cblBebidas.DataValueField = "id";
        cblBebidas.DataMember = "precio";
        cblBebidas.DataBind();
    }

    protected void cargarCblsAdicional()
    {
        App_Negocio.Servicio_Adicional sAdicional = new App_Negocio.Servicio_Adicional();
        // Obtengo la tabla del DataSet
        DataView dataView = sAdicional.popularsAdicionalConTipo();

        //Vinculo con el DropDownList

        cblServiciosAdicionales.DataSource = dataView;
        cblServiciosAdicionales.DataTextField = "tSad_Nombre";
        cblServiciosAdicionales.DataValueField = "sAd_Id";
        cblServiciosAdicionales.DataBind();
    }

    public void cargarMenu(DropDownList ddlMenu)
    {
        App_Negocio.Menu men = new App_Negocio.Menu();

        DataView dv1 = men.cargarMenu();

        ddlMenu.DataSource = dv1;
        ddlMenu.DataTextField = "menu_Nombre";
        ddlMenu.DataValueField = "menu_Id";
        ddlMenu.DataBind();
    }

    public void cargarSalon()
    {
        Salon sa = new Salon();

        DataView dv = sa.cargarSalon();

        SalonTable.Visible = false;

        ddlSalon.DataSource = dv;
        ddlSalon.DataTextField = "sal_Nombre";
        ddlSalon.DataValueField = "sal_Id";
        ddlSalon.DataBind();

    }

    protected void ddlMenu1_SelectedIndexChanged(object sender, EventArgs e)
    {

        if (ddlMenu1.SelectedIndex != 0)
        {
            ddlMenu2.Items.Clear();
            ddlMenu2.Items.Add("Menú Opción 2");
            cargarMenu(ddlMenu2);
            ddlMenu2.Items.RemoveAt(ddlMenu1.SelectedIndex);
            ddlMenu2.Enabled = true;
            ddlMenu3.Items.Clear();
            ddlMenu3.Items.Add("Menú Opción 3");
            ddlMenu3.Enabled = false;

            this.cargarMenuDetalles(int.Parse(ddlMenu1.SelectedValue), GVMenu01);
            Accordion1.SelectedIndex = 0;

            this.borrarGrilla(GVMenu02);
            this.borrarGrilla(GVMenu03);
        }
        else
        {
            ddlMenu2.Items.Clear();
            ddlMenu2.Items.Add("Menú Opción 2");
            ddlMenu2.Enabled = false;
            ddlMenu3.Items.Clear();
            ddlMenu3.Items.Add("Menú Opción 3");

            ddlMenu3.Enabled = false;
            this.borrarGrilla(GVMenu02);
            this.borrarGrilla(GVMenu03);
        }
    }

    protected void ddlMenu2_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddlMenu2.SelectedIndex != 0)
        {
            ddlMenu3.Items.Clear();
            ddlMenu3.Items.Add("Menú Opción 3");
            cargarMenu(ddlMenu3);
            ddlMenu3.Items.RemoveAt(ddlMenu1.SelectedIndex);
            ddlMenu3.Items.RemoveAt(ddlMenu2.SelectedIndex);
            ddlMenu3.Enabled = true;
            this.cargarMenuDetalles(int.Parse(ddlMenu2.SelectedValue), GVMenu02);
            Accordion1.SelectedIndex = 1;
            this.borrarGrilla(GVMenu03);
        }
        else
        {
            ddlMenu3.Items.Clear();
            ddlMenu3.Items.Add("Menu Opción 3");
            ddlMenu3.Enabled = false;
            this.borrarGrilla(GVMenu03);
        }
    }

    protected void ddlMenu3_SelectedIndexChanged(object sender, EventArgs e)
    {
        this.cargarMenuDetalles(int.Parse(ddlMenu3.SelectedValue), GVMenu03);
        Accordion1.SelectedIndex = 2;
    }

    protected void ddlSalon_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddlSalon.SelectedIndex != 0)
        {
            App_Negocio.Salon salon = new App_Negocio.Salon();
            salon.Id = int.Parse(ddlSalon.SelectedValue);
            salon.buscarDatosSalon();

            lblSalonNombre.Text = salon.Nombre;
            lblSalonCapacidad.Text = salon.Capacidad.ToString();
            lblSalonDireccion.Text = salon.Calle + " Nº " + salon.Numero.ToString();
            //imgSalon.Visible = true;
            imgSalon.ImageUrl = salon.Imagen;
            SalonTable.Visible = true;
            Accordion1.SelectedIndex = 3;
        }
        else
        {
            SalonTable.Visible = false;
            //imgSalon.Visible = false;
        }
    }

    protected void borrarGrilla(GridView grilla)
    {
        DataView dv = new DataView();
        grilla.DataSource = dv;
        grilla.DataBind();
    }

    public void cargarMenuDetalles(int idMenu, GridView GVMenu)
    {
        App_Negocio.Menu menu = new App_Negocio.Menu();

        DataView dvMenu = menu.cargarMenuDetalles(idMenu);

        GVMenu.DataSource = dvMenu;
        GVMenu.DataKeyNames = new string[] { "Tipo_De_Alimento", "Nombre", "Descripcion" };
        GVMenu.DataBind();

    }

    protected void btnEnviar_Click(object sender, EventArgs e)
    {
        if (validarCombos())
        {
            //string error1 = "";
            try
            {
                guardarPresupesto();
                //error1 = "pasa presupuesto";
                Session["Mensaje"] = "El Presupuesto ha sido enviado con éxito, nos comunicaremos a la brevedad";
                //error1 = "pasa session";
                Session["IrAPagina"] = "Principal_Clientes.aspx";
                //error1 = "pasa session 2";
                
                //error1 = "pasa response";
            }
            catch (SystemException ex)
            {
                Session["Mensaje"] = " No se Guardo el presupuesto ";// +error1 + " " + ex.Message;
                Session["IrAPagina"] = "Principal_Clientes.aspx";
                //Response.Redirect("Bienvenida.aspx");
            }
            Response.Redirect("Bienvenida.aspx");
        }
    }

    protected bool validarCombos()
    {
        int bandera = 0;
        if (ddlTipoEvento.SelectedItem.Value == "TipoEvento")
        {
            lblMensaje.Text = "Ingrese: Tipo de Evento; ";
            bandera = 1;
        }
        if (ddlMenu1.SelectedItem.Value == "Menu1")
        {
            lblMensaje.Text += "Ingrese: Menu; ";
            bandera = 1;
        }
        if (txtCantInvitados.Text == "")
        {

            lblMensaje.Text += "Cantidad de Invitados; ";
            bandera = 1;
        }
        if (bandera == 1)
        {
            return false;
        }
        else
        {
            return true;
        }
    }

    protected void guardarPresupesto()
    {
        try
        {
            // Cliente
            App_Negocio.Cliente cli = new App_Negocio.Cliente();
            cli.ClienteId = int.Parse(Session["Identificador"].ToString());


            App_Negocio.EventoTipo evTipo = new App_Negocio.EventoTipo();
            evTipo.Id = int.Parse(ddlTipoEvento.SelectedItem.Value);

            // Armo lista de menus 
            List<App_Negocio.Presupuesto_Detalle> PresupDetalle = new List<Presupuesto_Detalle>();
            
            if (ddlMenu1.SelectedIndex != 0)
            {
                App_Negocio.Menu menu1 = new App_Negocio.Menu();
                menu1.Menu_Detalles = new List<Menu_Detalle>();
                App_Negocio.Menu_Detalle md1 = new Menu_Detalle();// DE PRUEBA
                md1.Id = 2;
                menu1.Menu_Detalles.Add(md1);// DE PRUEBA
                menu1.Id = int.Parse(ddlMenu1.SelectedValue);
                //menu1.buscarUnMenu(); VER SI HAY QUE ELIMINAR
                App_Negocio.Presupuesto_Detalle p1 = new Presupuesto_Detalle();
                p1.Menu = menu1;
                PresupDetalle.Add(p1);
            }

            if (ddlMenu2.SelectedIndex != 0)
            {
                App_Negocio.Menu menu2 = new App_Negocio.Menu();
                menu2.Id = int.Parse(ddlMenu2.SelectedValue);
                menu2.buscarUnMenu();
                App_Negocio.Presupuesto_Detalle p2 = new Presupuesto_Detalle();
                //p2.Menu = menu2; VER SI HAY QUE ELIMINAR
                PresupDetalle.Add(p2);
            }

            if (ddlMenu3.SelectedIndex != 0)
            {
                App_Negocio.Menu menu3 = new App_Negocio.Menu();
                menu3.Id = int.Parse(ddlMenu3.SelectedValue);
                menu3.buscarUnMenu();
                App_Negocio.Presupuesto_Detalle p3 = new Presupuesto_Detalle();
                //p3.Menu = menu3; VER SI HAY QUE ELIMINAR
                PresupDetalle.Add(p3);
            }

            // salon

            Salon salon = new Salon();
            if (ddlSalon.SelectedIndex != 0)
            {
                salon.Id = int.Parse(ddlSalon.SelectedItem.Value);
                salon.buscarUnSalon();
            }
            else
            {
                salon.Id = 0;
            }
            //// Bebidas

            //List<App_Negocio.Bebida> ListaBebida = new List<Bebida>();

            //for (int i = 0; i < cblBebidas.Items.Count; i++)
            //{
            //    if (cblBebidas.Items[i].Selected)
            //    {
            //        App_Negocio.Bebida bebida = new App_Negocio.Bebida();
            //        bebida.Id = int.Parse(cblBebidas.Items[i].Value);
            //        bebida.buscarUnaBebida();
            //        //bebida.Nombre = "bebidin";//BORRAR es solo de prueba
            //        ListaBebida.Add(bebida);
            //    }
            //}

            // Bebidas

            List<App_Negocio.Presupuesto_Bebida> ListaBebida = new List<Presupuesto_Bebida>();
            int cantPer = int.Parse(txtCantInvitados.Text);
            for (int i = 0; i < cblBebidas.Items.Count; i++)
            {
                if (cblBebidas.Items[i].Selected)
                {
                    App_Negocio.Presupuesto_Bebida pb = new Presupuesto_Bebida();
                    App_Negocio.Bebida bebida = new App_Negocio.Bebida();
                    bebida.Id = int.Parse(cblBebidas.Items[i].Value);
                    bebida.buscarUnaBebida();
                    pb.CantidadBebida = bebida.CantEstimadaPorPersona * cantPer;
                    pb.Bebida = bebida;
                    ListaBebida.Add(pb);
                }
            }

            //  Servicio_Adicional

            List<App_Negocio.Servicio_Adicional> ListaSAdicional = new List<Servicio_Adicional>();

            //App_Negocio.Servicio_Adicional sAdicional = new App_Negocio.Servicio_Adicional();
            for (int i = 0; i < cblServiciosAdicionales.Items.Count; i++)
            {
                if (cblServiciosAdicionales.Items[i].Selected)
                {
                    App_Negocio.Servicio_Adicional sAdicional = new App_Negocio.Servicio_Adicional();
                    sAdicional.Id = int.Parse(cblServiciosAdicionales.Items[i].Value);
                    //sAdicional.Nombre=cblServiciosAdicionales.Items[i].Text
                    sAdicional.buscarUnServicio();
                    //    sAdicional.Nombre = "Servicio Adicional";//BORRAR es solo de prueba
                    ListaSAdicional.Add(sAdicional);
                }
            }

            App_Negocio.Presupuesto_Estado estado = new App_Negocio.Presupuesto_Estado();
            estado.Numero = 1;

            String comentario = tbxComentario.Text;

            App_Negocio.Presupuesto presupuesto = new App_Negocio.Presupuesto();

            presupuesto.CantPersonas = int.Parse(txtCantInvitados.Text);
            presupuesto.Salon = salon;
            presupuesto.TipoEvento = evTipo;
            presupuesto.PresupuestoDetalle = PresupDetalle;
            presupuesto.ServicioAdicional = ListaSAdicional;
            presupuesto.Bebidas = ListaBebida;
            presupuesto.Cliente = cli;
            presupuesto.FechaCreacion = System.DateTime.Now;
            presupuesto.FechaEvento = DateTime.Parse(txtFecha.Text);//.Parse("21/09/2009");
            //presupuesto.FechaEvento = DateTime.Parse(txtFecha.ToString("g", CultureInfo.CreateSpecificCulture("es-ES")));
            presupuesto.PEstado = estado;
            presupuesto.Comentario = comentario;
            presupuesto.guardarPresupuesto();

            
        }
        catch (SystemException ex)
        {
            throw new SystemException(ex.Message);
        }

    }
    protected void ddlTipoEvento_SelectedIndexChanged(object sender, EventArgs e)
    {

    }
}
